package main

import "strings"
/*
	给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序
	在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外空间
*/
func reverseWords(s string)string{
	//通过空格划分，反转单词内部
	result := ""
	//通过空格分隔单词，进行翻转
	words := strings.Split(s," ")
	for i:=0;i<len(words);i++{
		wordstring := reverseStringfunc([]rune(words[i]),0,len(words[i])-1)
		if i==0{
			result = wordstring
		}else{
			result +=" "+wordstring
		}
	}
	return result
}

func reverseStringfunc(s []rune,start,end int) string{
	for{
		if start>=end{
			break
		}
		//string是不可变的
		//s[start], s[end] = s[end], s[start]
		s[start],s[end] = s[end],s[start]
		start++
		end--
	}
	return string(s)
}
func main(){
	s := "Let's take LeetCode contest"
	str:=reverseWords(s)
	println(str)
}